program Quatre; {Les structures de controle suite} USES CRT; Var a:char; ma_chaine:STRING; {'ma_chaine'est declaree comme chaine de caracteres} i: Integer; {Declare i comme un nombre entier} Begin clrscr; {efface l'écran} { La struture de controle IF (condition) THEN action ELSE action } writeln(' EXEMPLE 1: IF sans ELSE :'); writeln('Tapez sur la touche A ou la touche B (echap pour sortir)'); repeat a:=UPCASE(readkey); {Upcase transforme une lettre minuscule en majuscule} if a ='A' THEN Begin writeln('Vous avez appuye sur la touche A'); End; if a ='B' THEN Begin writeln('Vous avez appuye sur la touche B'); End; until ord(a) = 27; {code ascii de touche ECHAP =27} writeln(' EXEMPLE 2: IF avec ELSE :'); writeln('Tapez sur la touche A ou autre (echap pour sortir)'); repeat a:=UPCASE(readkey); {Upcase transforme une lettre minuscule en majuscule} if a ='A' THEN Begin writeln('Vous avez appuye sur la touche A'); End {Remarquez qu'il n'y a pas de point virgule ici} Else {c'est que a<>'A'} Begin writeln('Vous avez appuye sur une autre touche '); End; until ord(a) = 27; {code ascii de touche ECHAP =27} End.
program Cinq; {Mon premier petit jeu} USES CRT; Var a:char; ma_chaine:STRING; {'ma_chaine'est declaree comme chaine de caracteres} i,nb,inf,sup,nb_recherche: Integer; nb_alea:real; BEGIN textcolor(Yellow); {Couleur du texte entre 0 (black) et 15 (white)} textbackground(Blue); {Couleur du fond entre 0 (black) et 8 } clrscr; inf:=0; sup:=100; randomize; {pour avoir un nb alΘatoire different a chaque lancement du programme} nb_alea :=random(100); {Initialise un nombre alΘatoire &Lt 100 } nb_recherche:=TRUNC(nb_alea); {Prend la partie entiΦre} writeln('Objectif du jeu : trouver un nombre cachΘ '); writeln('Pour arreter le jeu tapez un nombre > 100'); repeat writeln('Entrez un nombre compris entre ',inf,' et ',sup); readln(nb); if nb > nb_recherche then sup:=nb; {Pour rΘduire l'intervale} if nb &Lt nb_recherche then inf:=nb; until (nb=nb_recherche) or (nb > 100); {conditions de sortie} if nb=nb_recherche then Begin writeln('BRAVO ! Vous avez gagnΘ !'); sound(440); {jouer un son} Delay(500); nosound; a:=readkey; End; END.
program Six; {rΘsolution d'une Equation} USES CRT; Var ch:char; err : integer; {*** Variable pour mes equations *****} A1,B1,C1,Xm1,Xm2 : STRING; A,B,C,DELTA,X1,X2 : Real; BEGIN textcolor(Yellow); {Couleur du texte entre 0 (black) et 15 (white)} textbackground(Blue); {Couleur du fond entre 0 (black) et 8 } clrscr; repeat writeln; writeln; writeln('RΘsolution d''une Equation du Second degrΘ '); writeln('Du type Ax^2+Bx+c = 0'); writeln('Vous devez entrer les coefficient A,B et C'); Write('Entrez A :'); readln(A1); VAL(A1,A,err); {A1 string est transformΘe en A valeur numΘrique integer} Write('Entrez B :'); readln(B1); VAL(B1,B,err); {B1 string est transformΘe en B valeur numΘrique integer} Write('Entrez C :'); readln(C1); VAL(C1,C,err); {C1 string est transformΘe en C valeur numΘrique integer} DELTA := B*B-(4*A*C); IF (DELTA < 0) THEN Begin Writeln('Pas de solution dans R, Delta nΘgatif =',DELTA); End ELSE IF (A = 0) THEN Begin Writeln('A = 0, ce n'est pas une Equation du second degrΘ'); END ELSE BEGIN X1:=(-B-SQRT(DELTA))/(2*A); X2:=(-B+SQRT(DELTA))/(2*A); writeln(' Les solutions sont :'); writeln(' X1 = ',X1); writeln(' X2 = ',X2); str(X1:10:3,Xm1); {Valeur X1 transformΘe en chaine caractΦre Xm1} str(X2:10:3,Xm2); {10 et 3 reprΘsente formatage c-a-d le nb de chiffre avant et aprΦs la virgule} writeln('Et de faτon plus lisible :'); writeln(' X1 = ',Xm1); writeln(' X2 = ',Xm2); END; Writeln('Voulez vous sortir ? (O/N)'); ch:=readkey; Until (UPCASE(ch)='O') OR (ORD(ch)=27); {O ou Echap pour sortir} END.
program Sept; {Appel de procedures} USES CRT; {*** Les variables globales de mon programme sont declarees ici ***} Var ch:char; err : integer; glob1,glob2: integer; {*** Déclaration de mes procedures ***} Procedure Toto1; Begin writeln; writeln('Execution de la procedure Toto1'); writeln(' J''affiche n''importe quoi '); writeln('... et on sort de la procedure toto1'); writeln; End; Procedure Toto2; Var a,b : Integer; { a et b variables locales ne sont connues que par la procedure toto2} Begin a:=10; b:=15; writeln; writeln('Execution de toto2'); writeln('a = ',a); writeln('b = ',b); writeln('Fin d''execution de toto2'); writeln; End; Procedure Toto3(x,y : integer ); Begin writeln; writeln('Execution de toto3: x et y sont passΘs en paramΦtres'); writeln('x= ',x); writeln('y= ',y); x:=x+y; writeln('Je modifie la valeur de x :'); writeln('x:=x+y = ',x); writeln('Fin d''execution de toto3'); writeln; End; Procedure toto4(x,y : integer); Var a,b : real; {variables de type reel declarΘes en local} Begin writeln; writeln('Execution de toto4'); b:=100; a:=glob1+glob2+b; {Je peux utiliser glob1 et glob2 dans mes procΘdures } writeln('Dans toto4 a = ',a); writeln('Fin de toto4'); writeln; End; BEGIN textcolor(Yellow); {Couleur du texte entre 0 (black) et 15 (white)} textbackground(Blue); {Couleur du fond entre 0 (black) et 8 } clrscr; repeat clrscr; { Appel de la procedure toto1 } toto1; { Appel de la procedure toto2 } toto2; {Appel de la procedure toto3 avec 2 parametres: Glob1 et Glob2 } glob1:=10; glob2:=20; toto3(glob1,glob2); writeln('... mais Glob1 et glob2 ont gardé leur valeur'); writeln('Glob1 = ',glob1); writeln('Glob2 = ',glob2); writeln('Appuyez sur une touche pour executer toto4'); ch:=readkey; toto4(glob1,glob2); Writeln('Voulez vous sortir ? (O/N)'); ch:=readkey; Until (UPCASE(ch)='O') OR (ORD(ch)=27); {O ou Echap pour sortir} END.NOTE : Naturellement nous n'avons pas fait le tour de la question au sujet des procedures (loin s'en faut ...) mais c'est largement suffisant pour commencer !
PROGRAM Huit; {Programme graphique} USES CRT,Graph; Var pilote,mode,i,fonte,direc,taille: Integer; x,y:real; a: char; Begin pilote:=DETECT; {Initialisation du mode graphique} InitGraph(pilote,mode,'c:\tp7\tp\bgi'); {Donnez le chemin du repertoire bgi} {**** Instructions pour tracer des lignes et changer couleur ****} setcolor(white); {choisissez la couleur} line(10,10,200,200); {dessine une ligne du point coordonnees (10,10) au point (200,200)} setcolor(red); lineto(70,350); setcolor(5); {15 max pour la couleur} lineto(500,350); {Trace une ligne à partir du dernier point} putpixel(400,50,yellow); {dessine un point jaune en haut a droite ecran} {****** Affichage du texte ******} fonte:=2; {0 α 4} direc:=0; {0 ou 1} taille:=8; {facteur d'agrandissement} setcolor(blue); settextstyle(fonte,direc,taille); outtextXY(100,50,'Appuyez sur une touche :'); {Ne pas utiliser writeln !!} a:=readkey; {******* Courbe sinus ********} x:=0; for i:=0 to 1000 do begin x:=x+0.05; y:=100*sin(x); {Pour avoir une courbe sinus} putpixel(trunc(x*10),200-trunc(y),yellow); {trunc renvoie la partie entiere} end; a:=readkey; closeGraph; {Ferme le mode Graphique} End.